﻿/*
Nombre:                         ObtenerAccion
Descripcion:                    Accion que obtiene un movimiento de la base de datos utilizando la tecnologia LINQ
Dependencias:                 
Fecha de creación:              20090427
Autor:                          VMORALES
Fecha de modifcación:         
Responsable:                  
Num. de modifcación:            0
*/

#region Imports

using Entidades = Electrocucaracha.AdminPersonal.DAO.Entidades;
using Electrocucaracha.AdminPersonal.DAO.Acciones;
using System;
using System.Linq;
using Common.Logging;
using System.Data.Linq;

#endregion

namespace Electrocucaracha.AdminPersonal.DAO.Linq.Acciones.Movimiento
{
    /// <summary>
    /// Accion que obtiene un movimiento de la base de datos utilizando la tecnologia LINQ
    /// </summary>
    class ObtenerAccion : Accion 
    {
        #region Constantes

        #endregion

        #region Miembros

        private static readonly ILog log = LogManager.GetLogger(typeof(ObtenerAccion));

        #endregion

        #region Propiedades

        #endregion

        #region Constructores

        #endregion

        #region Funciones

        #endregion

        #region IAccion

        /// <summary>
        /// Accion que obtiene de la base de datos el movimiento solicitado
        /// </summary>
        public override void Ejecutar()
        {
            log.Info("Inicio Movimiento.ObtenerAccion.Ejecutar()");

            parametros[OUTPUT] = null;
            Nullable<int> idMovimiento = parametros[INPUT] as Nullable<int>;
            if (idMovimiento.HasValue)
            {
                log.Debug("Id : " + idMovimiento);

                dbAdminPersonalDataContext dbAdmin = new dbAdminPersonalDataContext();
                ISingleResult<Entidades.MovimientoDTO> tmp = dbAdmin.ObtenerMovimiento(idMovimiento.Value);
                if (tmp != null)
                {
                    parametros[OUTPUT] = tmp.SingleOrDefault<Entidades.MovimientoDTO>();
                }
                else
                {
                    log.Warn("No se obtuvo ningun movimiento con el identificador especificado");
                }
            }
            else
            {
                log.Error("No se pudo obtener el valor para buscar el movimiento deseado");
                throw new DAOException("No se pudo obtener el valor para buscar el movimiento deseado");
            }

            log.Info("Fin Movimiento.ObtenerAccion.Ejecutar()");
        }//Ejecutar

        #endregion

    }//ObtenerAccion
}//Electrocucaracha.AdminPersonal.DAO.Linq.Acciones.Movimiento